package com.codeant.bikeindicatorapplication.tools;


import android.content.Context;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;

public class ScreenSizeHelper {
    
    String TAG = "ScreenSizeHelper";
    
    int width_dp;
    int height_dp;
    public int statusBarHeight_dp;//状态栏高度，用时需要注意单位

    int width_pixel;
    int height_pixel;
    public int statusBarHeight_pixel;//状态栏高度，用时需要注意单位

    public int getWidth(Context context , int dp_or_px) {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);
        this.width_pixel = dm.widthPixels;         // 屏幕宽度（像素）
        float density = dm.density;         // 屏幕密度（0.75 / 1.0 / 1.5）
        int densityDpi = dm.densityDpi;     // 屏幕密度dpi（120 / 160 / 240）
        // 屏幕宽度算法:屏幕宽度（像素）/屏幕密度
        this.width_dp = (int) (this.width_pixel / density);  // 屏幕宽度(dp)
        
        Log.i(TAG, "屏幕宽度（像素）：" + this.width_pixel);
        Log.i(TAG, "屏幕密度（0.75 / 1.0 / 1.5）：" + density);
        Log.i(TAG, "屏幕密度dpi（120 / 160 / 240）：" + densityDpi);
        Log.i(TAG, "屏幕宽度（dp）：" + this.width_dp);
        if (dp_or_px == 0){
            return this.width_dp;
        }else{
            return this.width_pixel;
        }
    }

    public void getHeight(Context context) {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);
        this.height_pixel = dm.heightPixels;         // 屏幕宽度（像素）
        float density = dm.density;         // 屏幕密度（0.75 / 1.0 / 1.5）
        int densityDpi = dm.densityDpi;     // 屏幕密度dpi（120 / 160 / 240）
        // 屏幕宽度算法:屏幕宽度（像素）/屏幕密度
        this.height_dp = (int) (this.height_pixel / density);  // 屏幕宽度(dp)
        
        Log.i(TAG, "屏幕高度（像素）：" + this.height_pixel);
        Log.i(TAG, "屏幕密度（0.75 / 1.0 / 1.5）：" + density);
        Log.i(TAG, "屏幕密度dpi（120 / 160 / 240）：" + densityDpi);
        Log.i(TAG, "屏幕高度（dp）：" + this.height_dp);
    }

    // 获取状态栏高度
    public void getStatusBarHeight(Context context){
        int statusBarHeight_px = -1;
        int statusBarHeight_dp = -1;
        //获取status_bar_height资源的ID
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            //根据资源ID获取响应的尺寸值
            statusBarHeight_px = context.getResources().getDimensionPixelSize(resourceId);
        }
        this.statusBarHeight_pixel = statusBarHeight_px;
        
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);
        float density = dm.density;         // 屏幕密度（0.75 / 1.0 / 1.5）
        int densityDpi = dm.densityDpi;     // 屏幕密度dpi（120 / 160 / 240）
        // 屏幕宽度算法:屏幕宽度（像素）/屏幕密度
        this.statusBarHeight_dp = (int) (this.statusBarHeight_pixel / density);  // 屏幕宽度(dp)

        Log.i(TAG, "状态栏高度（像素）：" + this.statusBarHeight_pixel);
        Log.i(TAG, "屏幕密度（0.75 / 1.0 / 1.5）：" + density);
        Log.i(TAG, "屏幕密度dpi（120 / 160 / 240）：" + densityDpi);
        Log.i(TAG, "状态栏高度（dp）：" + this.statusBarHeight_dp);
    }


}